package com.yuncheng.spcyApi.mapper;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yuncheng.spcyApi.entity.*;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yuncheng.spcyApi.vo.fg.FgZjListVo;
import com.yuncheng.spcyApi.vo.sqsx.XcjcMsWtTkVo;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * @Description: 审评查验-法律法规-章节目录
 * @Author: yuncheng
 * @Date: 2023-10-27
 * @Version: V1.0
 */
public interface SpcyFgZjmlMapper extends BaseMapper<SpcyFgZjml> {

    /**
     * 根据章节id-获取条款分页列表
     * @param tk (fzjid: 章节id【必传】)
     */
    Page<SpcyFgTk> queryPageTkListByZjId(Page<SpcyFgTk> page,@Param("bean") SpcyFgTk tk);

    /**
     * 根据章节id-获取指导原则分页列表
     * @param zdyz (fzjid: 章节id【必传】)
     */
    Page<SpcyFgZdyz> queryPageZdyzListByZjId(Page<SpcyFgZdyz> page,@Param("bean") SpcyFgZdyz zdyz);

    /**
     * 根据章节id-获取模版分页列表
     * @param mb (fzjid: 章节id【必传】)
     */
    Page<SpcyFgZjmsmb> queryPageMbListByZjId(Page<SpcyFgZjmsmb> page, @Param("bean") SpcyFgZjmsmb mb);

    /**
     * 现场检查章节条款
     * @param page
     * @param gjz 关键字
     * @param zjid 章节id
     * @param ffgid 法规id
     * @return
     */
    Page<SpcyFgTk> selectPageXcjcTkListByXcjcZjId(Page<SpcyFgTk> page,
                                                  @Param("zjid")String zjid,
                                                  @Param("ffgid")String ffgid,
                                                  @Param("thk")String thk,
                                                  @Param("gjz")String gjz);

    /**
     * 查询申请事项问题条款
     * @param sqsxid
     * @return
     */
    List<SpcyFgTk> selectSqsxWttkList(@Param("sqsxid") String sqsxid);

    /** 根据id查询法律法规id */
    String selectFfgidById(@Param("id") String id);

    /** 根据id查询条款号 */
    String selectFzdyzhById(@Param("id") String id);

    /**
     * 查询现场检查章节条款-历史库
     */
    Page<SpcyFgTk> selectPageXcjcHistoryTkListByXcjcZjId(Page<SpcyFgTk> page,@Param("zjid")String zjid,@Param("gjz")String gjz);

    /**
     * 查询现场检查章节-发现问题历史库
     */
    Page<Map<String,Object>> selectPageXcjcHistoryZjWtListByXcjcZjId(Page<Map<String,Object>> page,
                                                                     @Param("zjid")String zjid,
                                                                     @Param("ffgid")String ffgid,
                                                                     @Param("gjz")String gjz);

    Page<Map> getAllHistoryMsmbList(Page<Map> page,
                                    @Param("fmbnr")String fmbnr,
                                    @Param("fqyid")String fqyid,
                                    @Param("fzjid")String fzjid,
                                    @Param("userid")String userid,
                                    @Param("isSearchMy")boolean isSearchMy,
                                    @Param("isSearchQt")boolean isSearchQt);

    /**
     * 查询章节的描述、问题和条款
     */
    List<XcjcMsWtTkVo> selectZjAndWtAndTkBySqsxId(@Param("sqsxid") String sqsxid);

    /**
     * 查询章节的描述、问题和条款
     */
    List<XcjcMsWtTkVo> selectWtAndTkBySqsxIdAndFzjid(@Param("sqsxid") String sqsxid, @Param("fzjid") String fzjid);

    /**
     * 关键字和法规id 查询对应的章节
     */
    List<SpcyFgZjml> selectZjmlByGjzAndFfgid(@Param("ffgid")String ffgid, @Param("gjz")String gjz);

    /**
     * 查询当前现场检查章节id对应的申请事项id
     */
    String selectFsqsxidByXcjczjId(@Param("id") String id);

    /**
     * 查询当前现场检查问题id对应的申请事项id
     */
    String selectFsqsxidByXcjcwtId(@Param("id") String id);

    /**
     * 查询发现问题总数
     * @param sqsxid
     * @return
     */
    Integer selectFxwtCountByFsqsxId(@Param("sqsxid") String sqsxid);

    /**
     * 按时间排序更新-重新排序-现场检查问题序号-根据申请事项id
     */
    void updateXcjcwtOrderBySqsxId(@Param("sqsxid") String sqsxid);

    /**
     * 查询同一个事项下，相同问题条款的问题列表
     */
    List<SpcyFgXcjcwt> selectFxwtListByFsqsxAndTkid(@Param("sqsxid") String sqsxid,
                                                    @Param("tkid") String tkid,
                                                    @Param("fwtzt") String fwtzt);

    /**
     * 查询现场检查章节名称-根据申请事项id
     */
    List<FgZjListVo> selectJczjNameListBySqsxId(@Param("sqsxid") String sqsxid);

    /**
     * 查询现场检查章节名称-根据id
     */
    String selectZjMcById(@Param("id") String id);

    /**
     * 查询现场检查章节模板内容-根据id
     */
    String selectWjmbMbnrByWjmbId(@Param("id") String id);

    /** 查询检查章节基本信息-根据id */
    SpcyFgXcjczj selectJczjxxById(@Param("id") String id);

}
